﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace JeuDeDames
{
    public class Coup
    {
        public Joueur joueur;
        public CaseNoire origine; //case sur laquelle la pièce du coup est placée
        public CaseNoire destination; //case sur laquelle la pièce du coup sera ensuite
        public Piece piece; //correspond à la piece qui est mangé par le coup, si il y a mangeage. null sinon.
        public int nbTour;

        public Coup(Joueur joueur, CaseNoire origine, CaseNoire destination, Piece piece)
        {
            this.joueur = joueur;
            this.origine = origine;
            this.destination = destination;
            this.piece = piece;
            this.nbTour = Damier.nbTour;
        }

        public Coup(Joueur joueur, CaseNoire origine, CaseNoire destination) : this(joueur, origine, destination, null)
        {

        }

        public Coup() { }

        public bool Equals(Coup c)
        {
            return (this.joueur == c.joueur && this.origine == c.origine && this.destination == c.destination);
        }

        /**
         * convertPosition: converti un int en sa case approprié. Ex: convertPosition(49) = A4
         * @return : la case en indiquant sa ligne et sa colonne. Ex: A4.
         * */
        public string convertPosition(int position)
        {
            int ligne = (int)(position / 12);
            string pos="";
            if (position % 12 == 1)
                pos = "A" + ligne;
            else if (position % 12 == 2)
                pos = "B" + ligne;
            else if (position % 12 == 3)
                pos = "C" + ligne;
            else if (position % 12 == 4)
                pos = "D" + ligne;
            else if (position % 12 == 5)
                pos = "E" + ligne;
            else if (position % 12 == 6)
                pos = "F" + ligne;
            else if (position % 12 == 7)
                pos = "G" + ligne;
            else if (position % 12 == 8)
                pos = "H" + ligne;
            else if (position % 12 == 9)
                pos = "I" + ligne;
            else if (position % 12 == 10)
                pos = "J" + ligne;
            return pos;
        }

        public override string ToString()
        {
            return "("+this.convertPosition(this.origine.position)+","+this.convertPosition(this.destination.position)+/*", "+this.manger+*/")";
        }

        public bool doitManger()
        {
            return (piece!=null);
        }

        public bool copie(Coup c)
        {
            try
            {
                this.joueur = c.joueur;
                this.origine = c.origine;
                this.destination = c.destination;
                this.piece = c.piece;
                this.nbTour = c.nbTour;
                return true;
            }
            catch
            {
                return false;
            }
        }
    }
}
